package com.situ.springboot.controller;

import com.situ.springboot.pojo.entity.Admin;
import com.situ.springboot.pojo.entity.Custom;
import com.situ.springboot.pojo.entity.User;
import com.situ.springboot.service.AdminService;
import com.situ.springboot.service.CustomService;
import com.situ.springboot.service.IUserService;
import com.situ.springboot.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.Objects;

@Controller
@RequestMapping("/user")
public class LoginController {
    @Autowired
    private IUserService userService;

    @Autowired
    private AdminService adminService;

    @Autowired
    private CustomService customService;

    @RequestMapping("/toLogin")
    public String toLogin() {
        return "/login"; //html界面的位置
    }

    @RequestMapping("/login")
    @ResponseBody //返回json格式数据要加这个注解 @ResponseBody
    public Result login(String name, String password, String code, HttpSession session) {
        //先验证验证码对不对，验证码正确再验证用户名密码是否正确
        //如果验证码不对，直接返回错误，后面也不需要执行
        /*String codeInSession = (String) session.getAttribute("codeInSession");
        if (!codeInSession.equalsIgnoreCase(code)) {
            return Result.error("验证码错误");
        }*/

        //根据name和password查这个用户有没有
        Admin admin = adminService.login(name, password);        //根据name和password查这个用户有没有
        User user=userService.login(name,password);
        Custom custom = customService.login(name, password);

        if(admin!=null)
        {
            if (admin.getStatus() == 0) { //这个用户禁用
                return Result.error("该管理员已经禁用");
            }
            session.setAttribute("admin", admin);
            return Result.ok("登录成功", admin);
        }
        else if ( user !=null) {//如果user!=null代表登录成功，跳转到首页
            if (user.getStatus()==0) {                //这个用户禁用
                return Result.error("该用户已经禁用");
            }
            session.setAttribute("user", user);      //将用户的登录凭证放到Session，Session可以理解为当前用户的会话
            return Result.ok("登录成功", user); //一个用户对应一个Session
        }
        else if (custom != null) {
            if (custom.getStatus()==0) {                //这个用户禁用
                return Result.error("该用户已经禁用");
            }
            session.setAttribute("custom", custom);      //将用户的登录凭证放到Session，Session可以理解为当前用户的会话
            return Result.ok("登录成功", custom); //一个用户对应一个Session
        }
        else {
            return Result.error("用户名或密码错误");  //登录失败，跳转到登录界面
        }


    }

    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/user/toLogin";
    }



    //注册
    @RequestMapping("/toRegister")
    public String toRegister() {

        return "/register";
    }
    @RequestMapping("/register")
    public String register(Custom custom) {
        if(custom.getName()==null || Objects.equals(custom.getName(), "")
                || custom.getPassword()==null || Objects.equals(custom.getPassword(), "")){
            return "redirect:/user/toRegister"; //注册失败返回注册界面
        }

        //注册成功后, 返回登录界面
        customService.add(custom);
        return "redirect:/user/toLogin";
    }
}
